Method and apparatus for preventing overload using scaled recovery

ABSTRACT

In the scaled recovery system of the present invention, clients delay for an additional period of time prior to attempting to access a previously unavailable resource that has since become available, rather than accessing the shared resource at full speed once an initial back off interval is over. Through the continual increment and decrement of client back off intervals, the present invention provides dynamic tuning of overall system load in the case of overloaded shared resources.

FIELD OF THE INVENTION

The invention relates generally to the field of data processing and, inparticular, to a method and apparatus for preventing overload usingscaled recovery.

BACKGROUND OF THE INVENTION

In systems utilizing shared resources, it is sometimes possible for oneor more shared resources to become unavailable for access by a clientdevice. For example, a shared resource such as a file server may becomeunavailable for access by a client device due to an operating system orfile system crash. Similarly, in an IEEE 802.3 compliant Ethernet basednetwork utilizing the carrier sense multiple access/collision detection(CSMA/CD) protocol, the shared Ethernet medium that is engaged by aclient will be considered unavailable (i.e. by detecting a collision) toall but the client accessing the medium. In either event, afterdetecting that a shared resource is unavailable, the clients may delayfor a period of time referred to as a “back off” interval beforeattempting to access the shared resource again.

This approach provides two benefits: first, the client and communicationsystem's workload is reduced while the shared resource is unavailable;and second, if the cause of the shared resource's unavailability is dueto an overload in client accesses, an incremental back off will reducethe load on the shared resource thereby potentially remedying theproblem. Such incremental back off systems, however, are limited. Forexample, if the shared resource is unavailable or non-responsive for alengthy period of time, it is possible for a substantial backlog ofclients attempting access to the shared resource to be created. When theshared resource becomes available again, clients will begin accessingthe shared resource once each of their individual back off intervals isover. If the queue of clients waiting to access the shared resource islarge, even though first-time re-accesses are staggered due to the backoff interval times, the potential exists for the shared resource tobecome immediately overloaded once again due e.g. to the volume of nearsimultaneous accesses. Such an overload condition can render theresource non-responsive once again, causing a cycle of resetting theshared resource only to have it fail again under queued client load.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention is illustrated by way of example, and not by way oflimitation in the figures of the accompanying drawings in which likereference numerals refer to similar elements.

FIG. 1 illustrates an overview of the present invention.

FIG. 2 illustrates a method view of the present invention.

FIG. 3 illustrates a first application of the present invention to localarea networking.

FIG. 4 illustrates a second application of the present invention towireless communication.

FIG. 5 illustrates a third application of the present invention to alocal bus;

FIG. 6 illustrates a fourth application of the present invention to adistributed data processing system including multiple shared resourcesin accordance with one embodiment of the invention.

FIG. 7 illustrates an example computer system suitable for use as client102 or another device to practice the present invention in the contextof FIG. 6, in accordance with one embodiment.

DETAILED DESCRIPTION

A method and apparatus for preventing overload using scaled recovery isdisclosed herein. In the following description, for purposes ofexplanation, specific numbers, materials and configurations are setforth in order to provide a thorough understanding of the invention. Itwill be apparent, however, to one skilled in the art that the inventionmay be practiced without these specific details. In some instances,structures and devices are shown in block diagram form in order to avoidobscuring the invention. In other instances, well-known features areomitted or simplified in order not to obscure the present invention. Forease of understanding, certain method steps are delineated as separatesteps, however, these separately delineated steps should not beconstrued as necessarily order dependent in their performance.Furthermore, reference in the specification to “one embodiment” or “anembodiment” means that a particular feature, structure, orcharacteristic described in connection with the embodiment is includedin at least one embodiment of the invention. The appearances of thephrase “in one embodiment” in various places in the specification arenot necessarily all referring to the same embodiment.

In the scaled recovery system of the present invention, clients employ ascaled ramp up approach to accessing a shared resource when the sharedresource becomes available after having been unavailable for a period oftime. After an unsuccessful attempt to access a shared resource is made,the client delays for a period of time (referred to herein as a firstback off interval) before attempting to access the shared resourceagain. For each successive unsuccessful attempt by the client to accessthe shared resource, the first back off interval is incrementallyincreased.

In one embodiment, upon determining that the shared resource has becomeavailable (i.e. accessible) after having been unavailable for a periodof time, clients incorporating the teachings of the present inventiondelay for an additional period of time (referred to herein as a secondback off interval) before reattempting to access the shared resource. Inone embodiment, the second back off period is decreased each time theclient successfully accesses the shared resource. Accordingly, throughthe continual increment and decrement of client back off intervals, thepresent invention incurs the additional benefit of dynamically tuningoverall system load in the case of overloaded shared resources. That is,the present invention is further beneficial in circumstances where theshared resource experiences a higher client load than the sharedresource can sustain.

FIG. 1 illustrates an overview of a system incorporated with theteachings of the present invention. As illustrated, system 200 includesshared resource 204 and a number of clients 202A-202D incorporated withthe teachings of the present invention. In one embodiment, clients202A-202D employ a ramped up approach to accessing shared resource 204once it becomes available again, after having been unavailable for aperiod of time. In one embodiment, rather than accessing shared resource204 at full speed once it becomes available after having beenunavailable for a period of time, clients 202A-202D delay for a periodof time corresponding to a second back off interval before attempting toaccess shared resource 204 once again.

Once the second back off interval expires, clients 202A-202D once againattempt to access shared resource 204. In one embodiment, if clients202A-202D determine that shared resource 204 is once again unavailableafter the expiration of the second back off interval, clients 202A-202Dwill determine a new first back off interval for which to delay prior toattempting to access shared resource 204. Conversely, if clients202A-202D determine that shared resource 204 is available after theexpiration of the second back off interval, the second back off intervalis reduced and stored for use the next time shared resource 204 isdetermined to be unavailable. In one embodiment, clients 202A-202Dsuccessively reduce the second back off interval every time sharedresource 204 is successfully accessed. Accordingly, the probability ofshared resource 204 getting overwhelmed and becoming unavailable onceagain is advantageously reduced.

As will be apparent from the description to follow, shared resource 204and clients 202A-202D represent a broad range of shared resources, andshared resource consuming devices of a variety of technical disciplines,including but not limited to wireless medium and wireless devices,networking medium and networking devices, local bus and bus agents, anddata/content servers and data/content consuming agents.

FIG. 2 illustrates the operational flow of relevant aspects of thescaled recovery services of the present invention. At block 302, adevice, such as client 202, attempts to access shared resource 204. Atdecision block 304, a determination is made as to whether the resourceis available. The manner in which the determination is made isapplication dependent. In an Ethernet network for example, devices maymake such a determination by sensing a carrier on the sharedcommunications medium. In the event the shared resource is a server,however, devices may determine that the server is available by receivingan acknowledgement (i.e. “ACK”) to a transmitted frame.

Upon determining that shared resource 204 is available at block 304, thedevice completes the transaction at block 306. However, if it isdetermined that shared resource 204 is unavailable or is otherwisenon-responsive (e.g. due to a system crash) a first back off intervalfor the device is determined at block 308 where it is decremented untilit expires. The manner in which the first back off interval isdetermined and decremented is also application dependent. In oneembodiment, the first back off interval delay is determined inaccordance with the truncated binary exponential back off (BEB) routineemployed by the CSMA/CD protocol (i.e. 0 r<2^(k); where k=min (n, 10); ris an integer with a delay value ranging from zero to one less than thevalue of two to the exponent, k; and k is assigned a value that is equalto either the number of transmission attempts by client 202 or thenumber 10, whichever is less.) The first back off interval may likewisebe determined in other manners such as algebraically and/orincrementally. At decision block 310, a determination is made as towhether the first back off interval has expired. In one embodiment, oneor more counters are utilized to determine when the first back offinterval expires.

Once the first back off interval has expired, the device once againattempts to access the shared resource at block 312, and makes adetermination as to whether the shared resource is now available atdecision block 314. If the shared resource is still unavailable, thefirst back off interval is recalculated at block 318 and the devicedelays in accessing the shared device until the recalculated first backoff interval expires once again at block 310. In one embodiment,recalculation of the first back off interval includes merelyincrementing the first back off interval, however, any number ofarithmetic and/or algebraic operations may be utilized to recalculatethe first back off interval. In one embodiment of the invention, acounter is utilized to store the number of unsuccessful attempts made bythe device to access the shared resource. In one embodiment, the counteris not reset to zero once a successful attempt to access the sharedresource is achieved. Accordingly, such a counter may be used todetermine the duration of a second back off period (described more fullybelow).

If at block 314, it is determined that the shared resource is available,in accordance with one embodiment of the invention, the device does notimmediately transmit a second or successive frames to the sharedresource. Rather, at block 316, a second back off interval is determinedfor which the device will delay before transmitting another frame. Inone embodiment of the invention, the second back off interval isdetermined based at least in part upon the number of unsuccessfulattempts made by the device to access the shared resource. In analternative embodiment, the second back off interval is determinedindependently of the number of unsuccessful attempts made by the deviceto access the shared resource.

At block 320, the second back off interval is decremented until thesecond back off interval expires. In one embodiment, the rate accordingto which the second back off interval is decremented is proportional tothe rate at which the first back off interval was incremented (e.g.,block 310). In another embodiment, the second back off interval isdecremented at a rate that is unrelated to the rate according to whichthe first back off interval was decremented. Once the second back offinterval expires at block 320, the device attempts to access the sharedresource once again at block 304. If it is determined that the sharedresource is available at block 304, the device completes the transactionat block 306. In one embodiment, additional second back off intervalsare successively determined upon each successful access of the sharedresource by a device. In one embodiment, each of the successive secondback off intervals is less in duration than each of the previous firstor second back off intervals.

The manner in which the operational logic illustrated by FIG. 2 isimplemented is application dependent. A number of exampleimplementations are described below in the context of the variousapplications being described, referencing the remaining figures.

FIG. 3 illustrates one application of the present invention as itapplies to the field of networking. As illustrated, local area network400 includes networking medium 404 and a number of networking clientdevices 402A-402D incorporated with the teachings of the presentinvention. In one embodiment, networking medium 404 represents an IEEE802.3 compliant Ethernet based network utilizing the carrier sensemultiple access/collision detection (CSMA/CD) protocol, althoughnetworking medium 404 may likewise represent a broad range of othernetworking mediums including but not limited to twisted pair, coaxialcables, optical fiber and the like. Similarly, networking client devices402A-402D represent a broad range of network client devices includingbut not limited to network enabled computer systems, set-top boxes,printers, RAID systems, and the like. For the illustrated embodiment,the operational logic described in association with FIG. 2 may beimplemented e.g. in network interface cards (not shown) of networkingclient devices 402A-402D.

In accordance with one embodiment of the invention, networking clientdevices 402A-402D employ a ramped up approach to accessing networkingmedium 404 when it becomes available after having been unavailable for aperiod of time. After detecting a collision on networking medium 404 forexample, networking client devices 402A-402D institute a first back offinterval (i.e. in accordance with the IEEE 802.3 CSMA/CD protocol),before attempting subsequent accesses to networking medium 404. However,rather than accessing networking medium 404 at full speed once the firstback off interval has expired and networking medium 404 becomesavailable, clients incorporating the teachings of the present inventioninstitute a second back off interval for which they once again delaybefore accessing networking medium 404. As a result, the probability ofnetworking medium 404 getting overwhelmed and becoming unavailable againis advantageously reduced.

FIG. 4 illustrates a second application of the present invention as itapplies to wireless communication. As illustrated, wireless system 500includes shared wireless medium 504 and a number of wireless clientdevices 502A-502D incorporated with the teachings of the presentinvention. Wireless medium 504 represents a broad range of such wirelessmediums, including but not limited to Radio Frequency (RF) wirelessmedium, Infrared (IR) wireless medium, as well as other optical medium.Wireless client devices 502A-502D represent a broad range of suchdevices, including but not limited to wireless cell phones, wirelesscommunication enabled personal digital assistants, and wirelesscommunication enabled laptop/desktop computer systems to name just afew. For the illustrated embodiment, the operational logic described inassociation with FIG. 2 may be implemented e.g. in the transceivers ofwireless client devices 502A-502D.

In the illustrated embodiment, wireless client devices 502A-502D employa ramped up approach to accessing shared wireless medium 504 when itbecomes available again, after having been unavailable for a period oftime (i.e. signals from at least one of client devices 502A-502D havingcollided with signals from one or more other of client devices 502A-502Dalso attempting to access shared wireless medium 504). Morespecifically, rather than accessing shared wireless medium 504 at fullspeed once shared wireless medium 504 becomes available after havingbeen unavailable for a period of time, client devices 502A-502Dincorporating the teachings of the present invention institute a secondback off interval representing a period of time for which the clientsdelay before accessing shared wireless medium 504 upon its becomingavailable. In one embodiment, wireless client devices 502A-502Dsuccessively reduce the second back off interval each time sharedwireless medium 504 is successfully accessed by the respective clientdevices. As a result, the probability of shared wireless medium 504getting overwhelmed and becoming unavailable again is advantageouslyreduced.

FIG. 5 illustrates a third application of the present invention as itapplies to a local bus. As illustrated, local bus system 600 includesshared local bus (or buses) 604 and a number of bus agents 602A-602Dincorporated with the teachings of the present invention. Local bus 604represents a broad range of data communication buses including but notlimited to the VESA bus, the PCI bus, the USB bus, IEEE 1394 HighPerformance Serial Bus, and the like. Bus agents 602A-602D represent abroad range of such devices including but not limited to diskcontrollers, memory controllers, graphic accelerators, video captures,and the like. In the illustrated embodiment, the operational logicdescribed in association with FIG. 2 may be implemented e.g. in the businterfaces of bus agents 602A-602D.

In accordance with the teachings of the present invention, bus agents602A-602D employ a ramped up approach to accessing local bus 604 when itbecomes available again, after having been unavailable for a period time(i.e. signals from at least one of bus agents 602A-602D having collidedwith signals from one or more other bus agents 602A-602D also attemptingto access local bus 604). More specifically, rather than accessing localbus 604 at full speed once local bus 604 becomes available after havingbeen unavailable for a period of time, bus agents 602A-602Dincorporating the teachings of the present invention institute a secondback off interval representing a period of time for which the agentsdelay before accessing local bus 604 upon its becoming available. In oneembodiment, bus agents 602A-602D successively reduce the second back offinterval each time local bus 604 is successfully accessed by therespective bus agent. As a result, load balancing may be advantageouslyachieved on shared local bus 604.

FIG. 6 is a graphical illustration of a fourth application of thepresent invention to distributed data processing systems includingmultiple shared resources, such as shared data/content databases, inaccordance with one embodiment of the invention. Distributed dataprocessing system 700 includes client 702, server 706, and data storagedevice 707, all of which are communicatively coupled to each other viashared medium 710. In one embodiment, shared medium 710 represents ashared resource such as a wired or wireless network utilized to transmitdata between each of client 702, server 706, and data storage device707. In some embodiments, distributed data processing system 700 mayinclude a greater or fewer number of devices than those illustrated inFIG. 6, as well as addition devices not illustrated in FIG. 6, withoutdeparting from the spirit and scope of the present invention.

In the illustrated embodiment, server 706 represents a device totransmit data between one or more clients (such as client 702), and/orone or more data storage devices (such as data storage device 707).Server 706 includes data/content database 716 to facilitate in-placeexecution of programming instructions, as well as the retrieval anddelivery of data/content to client 702. Client 702 represents one ormore general-or special-purpose devices equipped to communicate withserver 706 and/or data storage device 707 via shared medium 710. Client702 further includes a “query” function, which may be a part of anapplication, such as a browser, requesting data/content from server 706.

The query function of client 702 advantageously includes the teachingsof the present invention. In one embodiment, server 706 receivesprocessing requests initiated by client 702 via shared medium 710. Thegreater the processing load placed upon server 706, whether due torequests received from client 702 or otherwise, the greater thelikelihood is that server 706 will suffer a decrease in performanceand/or experience a devastating crash. However, client 702advantageously reduces the likelihood of successively overwhelmingserver 706 by practicing the “ramp up” technique of the presentinvention. Data storage device 707 represents one or more non-volatilememory devices such as a hard disk drive, DVD-ROM, DVD-RAM, etc. In oneembodiment data storage device 707 may be directly coupled to server 706rather than, or in addition to being communicatively coupled to server706 through shared medium 710.

FIG. 7 illustrates an example computer system suitable for use as client702 or another device to practice the present invention, in accordancewith one embodiment. As shown, computer system 802 includes one or moreprocessors 803 and system memory 804. Additionally, computer system 802includes mass storage devices 806 (such as diskette, hard drive, CDROMand so forth), input/output devices 808 (such as keyboard, cursorcontrol and so forth) and communication interfaces 810 (such as networkinterface cards, modems and so forth). The elements are coupled to eachother via system bus 812, which represents one or more buses. In theevent system bus 812 represents multiple buses, the buses may be bridgedby one or more bus bridges (not shown).

Except for the teachings of the present invention, each of the elementsin illustrated in FIG. 7 provide conventional functionality. Inparticular, non-transitory computer-readable media, such as systemmemory 804 and mass storage 806 are employed to store a working copy825A and a permanent copy 825B of the programming instructionsimplementing the scaled recovery aspects of the present invention. Morespecifically, in one embodiment, system memory 804 and mass storage 806include programming instructions to implement numerous scaled recoveryservices including shared resource load determination services, delayperiod generation services, and data transmission services. Thepermanent copy of the programming instructions may be loaded into massstorage 806 in the factory, or in the field, as described earlier,through a distribution medium (not shown) or through communicationinterface 810 from a distribution server (not shown). The constitutionof these elements 803-812 are known, and accordingly will not be furtherdescribed.

Thus, the novel combination of a first back off interval (e.g., asdescribed with respect to CSMA/CD) with the second back off interval ofthe present invention, facilitates a scaled recovery of overloadedsystems as well as facilitating fair network access by contendingdevices. In the foregoing specification, the invention has beendescribed with reference to specific embodiments thereof. It will,however, be evident that various modifications and changes can be madethereto without departing from the broader spirit and scope of theinvention. The specification and drawings are, accordingly, to beregarded in an illustrative rather than a restrictive sense.

1. A method comprising: attempting by a client to access a shared resource; detecting by the client that the shared resource is unavailable; determining by the client a first back off interval for the client to delay before reattempting to access the shared resource; successfully accessing the shared resource by the client, upon expiration of the first back off interval; and determining by the client, based on the successful access of the shared resource by the client, a second back off interval for the client to delay before reattempting to access the shared resource after said successful access, wherein the second back off interval is based at least in part on the number of unsuccessful attempts by the client prior to the successful access and/or on the determined first back off interval.
 2. The method of claim 1, wherein said second back off interval is less in duration than said first back off interval.
 3. The method of claim 2, further comprising: successively determining additional back off intervals upon each successful access of the shared resource by the client, without regard to availability of the shared resource, each of said successive back off intervals being less in duration than each previous back off interval.
 4. The method of claim 1, wherein said attempting to access a shared resource comprises attempting to access a server device coupled to the client.
 5. The method of claim 1, wherein said attempting to access a shared resource further comprises attempting to access a shared network.
 6. The method of claim 5, wherein said shared network further comprises an Ethernet network.
 7. The method of claim 5, wherein said shared network further comprises a wireless network.
 8. The method of claim 1, wherein said attempting to access a shared resource further comprises attempting to access a data bus.
 9. An apparatus comprising: a storage medium having stored therein a plurality of programming instructions for facilitating the apparatus in attempting to access a shared resource, detecting that the shared resource is unavailable, determining by a client a first back off interval for the client to delay before reattempting access to the shared resource, successfully accessing the shared resource upon expiration of the first back off interval, and determining by the client, based on the successful access of the shared resource by the client, a second back off interval for the client to delay before reattempting access to the shared resource after said successful access, wherein the programming instructions facilitate a determination of a second back off interval based at least in part on the number of unsuccessful attempts by the client prior to the successful access and/or on the determined first back off interval; and one or more processors coupled to the storage medium to execute the programming instructions.
 10. The apparatus of claim 9, wherein said second back off interval is less in duration than said first back off interval.
 11. The apparatus of claim 10, further comprising: programming instructions to further facilitate the apparatus in successively determining additional back off intervals without regard to availability of the share resource upon each successful access of the shared resource by the client, each of said successive back off intervals being less in duration than each previous back off interval.
 12. The apparatus of claim 9, wherein said shared resource comprises a server device coupled to the client.
 13. The apparatus of claim 9, wherein said shared resource comprises a shared network.
 14. The apparatus of claim 13, wherein said shared network comprises an Ethernet network.
 15. The apparatus of claim 13, wherein said shared network comprises a wireless network.
 16. The apparatus of claim 9, wherein said shared resource comprises a data bus.
 17. The apparatus of claim 9, further comprising: a counter to determine how many unsuccessful access attempts of the shared resource have been made by the client, wherein the counter value is not reset to zero upon the client successfully accessing the shared resource.
 18. A non-transitory machine accessible medium having stored therein a plurality of programming instructions for facilitating a client in attempting to access a shared resource, detecting by the client that the shared resource is unavailable, determining by the client a first back off interval for the client to delay before reattempting access to the shared resource, successfully accessing the shared resource by the client upon expiration of the first back off interval, and determining by the client, based on the successful access of the shared resource by the client, a second back off interval for the client to delay before reattempting access to the shared resource after said successful access, wherein the programming instructions facilitate the client in determining the second back off interval based at least in part on the number of unsuccessful attempts by the client prior to the successful access and/or on the determined first back off interval.
 19. A method comprising: detecting by a client that a shared resource is unavailable; determining by the client a first time period for the client to delay before attempting to access the shared resource; upon expiration of the first time period, determining a new first time period for the client to delay before attempting to access the shared resource if the shared resource remains unavailable, and determining by the client, based on a successful access of the shared resource by the client, a second time period for the client to delay before reattempting to access the shared resource after the successful access of the shared resource by the client, wherein the second time period is based at least in part on the number of unsuccessful attempts by the client prior to the successful access, on the determined first time period and/or on the determined new first time period.
 20. A system comprising: a system bus; a processor; an access module coupled to the system bus, and operated by the processor to access a shared resource; and a determination module operated by the processor to determine a first back off interval, based on an unsuccessful attempt to access the shared resource, for the access module to delay before reattempting access to the shared resource, and a second back off interval for the access module to delay before reattempting access to the shared resource after said successful access, the second back off interval being determined based on the successful access of the shared resource by the access module and based at least in art on the number of unsuccessful attempts by the client prior to the successful access and/or on the determined first back off interval.
 21. The non-transitory machine accessible medium of claim 18, wherein the programming instructions are adapted to further configured to facilitate the client in successively determining additional back off intervals, upon each successful access of the shared resource by the client, each of said successive back off intervals being less in duration than each previous back off interval.
 22. The method of claim 19, further comprising successively determining additional back off intervals, upon each successful access of the shared resource by the client, each of said successive back off intervals being less in duration than each previous back off interval.
 23. The system of claim 20, wherein the determination module is further adapted configured to successively determine additional back off intervals for the access module, upon each successful access of the shared resource, each of said successive back off intervals being less in duration than each previous back off interval.
 24. A method comprising: attempting by a client operated by a computing device to access a shared resource; detecting by the client that the shared resource is unavailable; determining by the client a first back off interval for the client to delay before reattempting to access the shared resource; successfully accessing the shared resource by the client, upon expiration of the first back off interval; and determining by the client, based on the successful access of the shared resource by the client, a second back off interval for the client to delay before reattempting to access the shared resource after said successful access, wherein the second back off interval is based at least in part on the number of unsuccessful attempts by the client prior to the successful access, or the determined first back off interval.
 25. The method of claim 24, wherein the shared resource is a wireless medium and the computing device is a wireless device.
 26. The method of claim 24, wherein the shared resource is a networking medium and the computing device is a networking device.
 27. The method of claim 24, wherein the shared resource is a local bus of the computing device and the client is a bus agent.
 28. The method of claim 24, wherein the shared resource is a data/content server and the computing device is a data/content consuming agent.
 29. The method of claim 24, wherein the client is a downloaded application.
 30. An article of manufacture including a non-transitory computer-readable medium having instructions stored thereon that, if executed by a computing device, cause the computing device to perform a method comprising: attempting by a computing device to access a shared resource; detecting by the computing device that the shared resource is unavailable; determining by the computing device a first back off interval for the computing device to delay before reattempting to access the shared resource; successfully accessing the shared resource by the computing device, upon expiration of the first back off interval; and determining by the computing device, based on the successful access of the shared resource by the computing device, a second back off interval for the computing device to delay before reattempting to access the shared resource after said successful access, wherein the second back off interval is based at least in part on the number of unsuccessful attempts by the computing device prior to the successful access, or the determined first back off interval.
 31. A method comprising: detecting by a computing device that a shared resource is unavailable; determining by the computing device a first time period for the computing device to delay before attempting to access the shared resource; upon expiration of the first time period, determining a new first time period for the computing device to delay before attempting to access the shared resource if the shared resource remains unavailable, and determining by the computing device, based on a successful access of the shared resource by the computing device, a second time period for the computing device to delay before reattempting to access the shared resource after the successful access of the shared resource by the computing device, wherein the second time period is based at least in part on the number of unsuccessful attempts by the computing device prior to the successful access, the determined first time period, or the determined new first time period.
 32. The method of claim 31, wherein said second time period is less in duration than said first time period.
 33. The method of claim 31, wherein a duration of the new first time period and any successive first time periods are progressively incremented after further unsuccessful attempts to access the shared resource.
 34. The method of claim 31, further comprising: successively determining additional time periods upon each successful access of the shared resource by the computing device, each of said successive additional time periods being less in duration than each such previous time period.
 35. The method of claim 31, wherein a duration of the first time period and any successive first time periods are progressively incremented at a rate after further unsuccessful attempts to access the shared resource, the method further comprising: successively determining additional time periods upon each successful access of the shared resource by the computing device, each of said successive additional time periods being less in duration than each such previous time period; and decrementing the additional time periods at the same rate as the first time periods were incremented.
 36. The method of claim 31, wherein the computing device is a wireless device.
 37. The method of claim 31, wherein the computing device is a cell phone, a personal digital assistant, a laptop computer, or a desktop computer.
 38. The method of claim 25, wherein the wireless device is a cell phone, a personal digital assistant, a laptop computer, or a desktop computer. 